package lambda;

import java.io.File;
import java.io.FileFilter;

/**
 * JDK8之后,java支持了lambda表达式这个特性.
 * lambda可以用更精简的代码创建匿名内部类.但是该匿名类内部类实现的接口只能有一个抽象方法,
 * 否则无法使用!
 *
 * 语法:
 * (参数列表)->{
 *     方法体
 * }
 */
public class LambdaDemo1 {
    public static void main(String[] args) {
        FileFilter filter =new FileFilter() {
            public boolean accept(File file) {
               return file.getName().contains("a");
            }
        };

        //lambda表示中参数的类型不需要指定,只需要指定参数名即可.
        FileFilter filter2 = (file)->{
            return file.getName().contains("a");
        };
        //如果方法体中只有一行代码是,方法体的"{}"是可以忽略不写的
        FileFilter filter4 = (file)->file.getName().contains("a");
        /*
        如果参数只有一个,则参数列表的"()"可以忽略不计
         */
        FileFilter filter5 = f->f.getName().contains("a");

        File dir=new File(".");
        if(dir.isDirectory()){
            File[] subs =dir.listFiles(file->file.getName().contains("a"));
        }
    }
}
